﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using QLKDS.DAL;
using Settings = QLKDS.Properties.Settings;
using QLKDS.Helper;

namespace QLKDS.Forms
{
    public partial class frmUserChangePassword : DevExpress.XtraEditors.XtraForm
    {
        private UserManager userManager;
        public frmUserChangePassword()
        {
            InitializeComponent();
          
        }
        private void frmUserChangePassword_Load(object sender, EventArgs e)
        {
            this.userManager = new UserManager();
        }

        private void txtConfigPassword_Leave(object sender, EventArgs e)
        {
            if (this.txtConfigPassword.Text.Trim() != String.Empty)
            {
                if (txtConfigPassword.Text.Trim() != this.txtNewPassword.Text.Trim())
                {
                    this.dxepConfigPassword.SetError(this.txtConfigPassword, "Mật khẩu xác nhận không chính xác");
                    this.txtConfigPassword.Focus();
                }
            }
        }

        private void txtOldPassword_EditValueChanged(object sender, EventArgs e)
        {
            if (this.txtOldPassword.Text.Trim() != String.Empty)
            {
                this.dxepOldPassword.ClearErrors();
            }
        }

        private void txtNewPassword_EditValueChanged(object sender, EventArgs e)
        {
            if (this.txtNewPassword.Text.Trim() != String.Empty)
            {
                this.dxepNewPassword.ClearErrors();
            }
        }

        private void txtConfigPassword_EditValueChanged(object sender, EventArgs e)
        {
            if (txtConfigPassword.Text.Trim() == this.txtNewPassword.Text.Trim())
            {
                this.dxepConfigPassword.ClearErrors();
            }
        }

        private void btnCancel_Click(object sender, EventArgs e)
        {
            this.DialogResult = DialogResult.Cancel;
            this.Close();
        }

        private void btnSave_Click(object sender, EventArgs e)
        {

            if (this.txtOldPassword.Text.Trim() == String.Empty)
            {
                this.dxepOldPassword.SetError(this.txtOldPassword, "Mật khẩu cũ không được để trống");
                this.txtOldPassword.Focus();
                return;
            }
            else if (this.txtNewPassword.Text.Trim() == String.Empty)
            {
                this.dxepNewPassword.SetError(this.txtNewPassword, "Mật khẩu mới không được để trống");
                this.txtNewPassword.Focus();
                return;
            }
            else if (this.txtConfigPassword.Text.Trim() == String.Empty)
            {
                this.dxepConfigPassword.SetError(this.txtConfigPassword, "Mật khẩu xác nhận không được để trống");
                this.txtConfigPassword.Focus();
                return;
            }
            else if (this.txtConfigPassword.Text.Trim() != String.Empty)
            {
                if (txtConfigPassword.Text.Trim() != this.txtNewPassword.Text.Trim())
                {
                    this.dxepConfigPassword.SetError(this.txtConfigPassword, "Mật khẩu xác nhận không chính xác");
                    this.txtConfigPassword.Focus();
                    return;
                }
            }
            else
            {
                this.dxepOldPassword.ClearErrors();
                this.dxepNewPassword.ClearErrors();
                this.dxepConfigPassword.ClearErrors();
            }
            if (this.userManager.CheckLogin(Settings.Default.Username, this.txtOldPassword.Text.Trim()))
            {
                var user = this.userManager.GetUserByUsername(Settings.Default.Username);
                user.Password = EncryptionPassword.GetMD5(this.txtNewPassword.Text.Trim());
                this.userManager.UpdateUser(user);
                XtraMessageBox.Show("Mật khẩu đã được thay đổi.Bạn phải khởi động lại chương trình để xác nhận", "Thông báo", MessageBoxButtons.OK);
                Application.Restart();
            }
            else
            {
                XtraMessageBox.Show("Không thành công.Kiểm tra lại thông tin", "Thông báo", MessageBoxButtons.OK,MessageBoxIcon.Error);
                return;
            }

            this.DialogResult = DialogResult.OK;
            this.Close();
        }

        
    }
}